/**
总结: 
 基本数据类型: 
    boolean 布尔类型  注意: Boolean 是构造函数 new出来的布尔对象用Boolean表示
    string 字符串类型
    number 数值类型
    undefined和null 在ts中也是数据类型. 并且undefined和null可以给任意数据类型赋值,因为null和undefined是所有类型的子类型 
    void 在ts中void表示空值, 主要用来表示函数没有返回值
    any 表示任意类型. 注意: 使用了any就失去类型检查和代码提示
    类型推论: 
        let num; 不赋值默认推论为any
        let num = 值 默认推论为当前值的类型
 */

// let bol: boolean = true

// let bol: boolean = new Boolean(1)
// let bol: Boolean = true
// let bol: boolean = Boolean(1)

// let decLiteral: number = 6
// //  十六进制表示法
// let hexLiteral: number = 0xf00d
// // 二进制表示法
// let binaryLiteral: number = 0b1010
// // 八进制表示法
// let octalLiteral: number = 0o744
// let notANumber: number = NaN
// let infinityNumber: number = Infinity

// let myName: string = 'Tom'
// let myAge: number = 25

// // 模板字符串
// let sentence: string = `Hello, my name is ${myName}.
// I'll be ${myAge + 1} years old next month.`

// function fn(x:number, y:number):void {
//   console.log(x + y)
// }
// function fn(x: number, y: number): number {
//   //   console.log(x + y)
//   return x + y
// }

// let u: undefined = undefined
// let n: null = null

// let num: number = undefined

// let u: void
// let num: number = u

// any
// let num: any = 123

// let anyThing: string = 'Tom'
// console.log(anyThing.myName)
// console.log(anyThing.myName.firstName)
// anyThing.setName('Jerry')
// anyThing.setName('Jerry').sayHello()
// anyThing.myName.setFirstName('Cat')
